package cn.wen.yaling.xo.service;

import cn.wen.yaling.commons.utils.ResultEntity;
import cn.wen.yaling.commons.vo.RoleAddVO;
import cn.wen.yaling.commons.vo.RoleMenuUpdateVO;
import cn.wen.yaling.commons.vo.RolePermissionUpdateVO;
import cn.wen.yaling.commons.vo.RoleUpdateVO;
import com.baomidou.mybatisplus.extension.service.IService;
import cn.wen.yaling.commons.utils.PageUtils;
import cn.wen.yaling.commons.entity.RoleEntity;

import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * 
 *
 * @author FY
 * @email 932043654@qq.com
 * @date 2022-08-13 02:07:36
 */
public interface RoleService extends IService<RoleEntity> {

    PageUtils queryPage(Map<String, Object> params);

    Set<String> getAllRoleNamesByUsername(String account);

    /**
     * 获取全部角色信息列表
     * @return
     */
    ResultEntity getRoleList();

    /**
     * 添加角色信息
     * @param roleAddVO
     * @return
     */
    ResultEntity addRole(RoleAddVO roleAddVO);

    /**
     * 修改角色信息
     * @param roleVO
     * @return
     */
    ResultEntity editRole(RoleUpdateVO roleVO);

    /**
     * 批量删除角色信息
     * @param roleIds
     * @return
     */
    ResultEntity deleteBatchRole(List<Integer> roleIds);

    /**
     * 分配角色菜单信息
     * @param roleMenuVO
     * @return
     */
    ResultEntity updateRoleMenu(RoleMenuUpdateVO roleMenuVO);

    /**
     * 分配角色数据权限
     * @param rolePermissionVO
     * @return
     */
    ResultEntity updateRolePermission(RolePermissionUpdateVO rolePermissionVO);

    /**
     * 通过角色Id 获取到该角色拥有的菜单列表
     * @param roleId
     * @return
     */
    ResultEntity getRoleMenuListById(Integer roleId);

    /**
     * 通过角色Id 获取到该角色拥有的权限列表
     * @param roleId
     * @return
     */
    ResultEntity getRolePermissionListById(Integer roleId);
}

